# -*- coding: utf-8 -*-
# @Time      : 2025-08-01
# @Author    : 2023090007@ahdy.edu.cn
# @File      : loghandler
# @Desc  日志
import logging
from logging.handlers import RotatingFileHandler
logger = logging.getLogger('my_logger')

def init_logger(log_level, log_path):
        logger.setLevel(log_level)
        # 2. 定义日志格式
        formatter = logging.Formatter(
            '%(asctime)s - %(name)s - %(levelname)s - %(module)s:%(lineno)d - %(message)s'
        )
        # 格式说明：
        # %(asctime)s：时间
        # %(name)s：日志器名称
        # %(levelname)s：级别
        # %(module)s:%(lineno)d：模块名和行号
        # %(message)s：日志内容

        # 3. 创建文件处理器（输出到文件）
        # RotatingFileHandler 支持日志文件大小限制和自动分割
        file_handler = RotatingFileHandler(
            log_path,          # 日志路径
            maxBytes=1024*1024, # 单个文件最大 1MB
            backupCount=5,      # 最多保留 5 个备份文件
            encoding='utf-8'    # 解决中文乱码
        )
        if log_level == "INFO":
            file_handler.setLevel(logging.INFO)  # 文件日志级别：只记录 INFO 及以上
        elif log_level == "WARN":
            file_handler.setLevel(logging.WARNING)  # 文件日志级别：只记录 WARN及以上
        else:
             file_handler.setLevel(logging.DEBUG)  # 文件日志级别：只记录 DEBUG 及以上

        file_handler.setFormatter(formatter)

        # 4. 创建控制台处理器（输出到控制台）
        console_handler = logging.StreamHandler()
        console_handler.setLevel(logging.DEBUG)  # 控制台日志级别：记录 DEBUG 及以上
        console_handler.setFormatter(formatter)

        # 5. 将处理器添加到日志器
        logger.addHandler(file_handler)
        # logger.addHandler(console_handler)